草庐IT

php - create_function 而不是 lambda 函数 avartaco

全部标签

c# - Foreach/For 循环替代 lambda 函数?

我们使用for或foreach循环遍历集合并处理每个条目。C#中所有这些用于集合的新lambda函数是否有替代方案?传统的做法foreach(varvinvs){Console.write(v);}有没有类似的东西?vs.foreach(v=>console.write(v)) 最佳答案 List有ForEach方法,但是IEnumerable没有。关于这个有很多问题/答案。我认为它没有在IEnumerable中实现的主要原因是Enumerables上的Linq“意味着”没有副作用,因为它是一种查询语言。EricLippert在他的

c# - 在 .NET 中,为什么常量在编译时而不是在 JIT 时求值?

今天,当我更改静态类中公开可见常量的值,然后用新编译的版本替换程序集的旧副本时,我有点吃惊。令人惊讶的是,引用程序集的现有程序没有获取常量的新值。也就是说,我没有重新编译可执行文件,而是只是替换了那个程序集。我的实验的完整描述位于Howconstantisaconstant?我承认我对这种行为感到非常惊讶。我明白发生了什么,但我不明白为什么。是否有特殊的技术原因导致无法在JIT时间而不是编译时间获取常量?在某些情况下这样做会破坏事情吗? 最佳答案 常量应该是常量。对于所有时间。常量是诸如pi的值或铅原子中的质子数之类的东西。如果你的

c# - 我可以将一个类标记为不是我的代码以便调试器跳过它吗?

我有一个经过全面测试的实用程序类,我不希望VS调试器进入它的任何方法。我想我听说过一种将某些东西标记为不是我的代码的方法,这样JustMyCode调试器设置会导致调试器跳过这些方法调用,但我想不起来是什么class属性是(我也无法通过Google成功搜索到它)。我知道我可以将这个类分离到它自己的程序集中并在Release模式下构建它以缓解这个问题,但我想进入一些程序集(并且我想将这个类保留在原处).这可能吗,还是我想出了这个选项?更新我对这两个选项(DebuggerStepThrough和DebuggerNonUserCode)进行了一些测试,我发现当启用/禁用JustMyCode时,

C# Lambda 函数 : returning data

我是不是遗漏了什么或者无法从lambda函数返回一个值,例如..对象测试=()=>{returnnewObject();};或stringtest=()=>{返回“你好”;};我收到构建错误“无法将lambda表达式转换为类型‘string’,因为它不是委托(delegate)类型”。好像这个语法赋值的是lambda而不是lambda的结果,这是我没想到的。我可以通过将函数分配给Func并按名称调用它来实现所需的功能,但这是唯一的方法吗?请不要“你为什么需要这样做?”关于我的例子。提前致谢! 最佳答案 这是可能的,但您正在尝试将la

c# - Azure Function,EF Core,无法加载 ComponentModel.Annotations 4.2.0.0

我已经创建了几个.NetStandard2.0库,通过控制台应用程序测试了执行情况,还有一些测试-一切都很好。转到azure函数,并得到以下运行时错误:然后我尝试将该特定版本下载到API函数项目中:我使用的是VisualStudio版本15.7.0预览版5.0。我已将AzureFunctions更新到4.7...因为控制台和测试项目是-并且这些工作正常。在这方面待了太多小时..所以我希望这个决议不是什么疯狂的事情。EfCore2.1.0-rc1-final也在其中。对Required、MaxLength、NotMapped使用数据注释。图形错误说:Microsoft.EntityFra

c# - Entity Framework 代码首先,不是创建数据库

下面是我的解决方案的概览:这是我的PizzaSoftwareData类:namespacePizzaSoftware.Data{publicclassPizzaSoftwareData:DbContext{publicDbSetCustomers{get;set;}publicDbSetOrders{get;set;}publicDbSetProducts{get;set;}publicDbSetUsers{get;set;}}}根据ScottGuthrie博客上的示例,您必须在应用程序开始时运行此代码才能创建/更新数据库架构。Database.SetInitializer(newCr

c# - 检查 IEnumerable 是否有任何行而不枚举整个列表

我有以下方法返回T类型的IEnumerable。方法的实现并不重要,除了yieldreturn到lazyloadIEnumerable之外。这是必要的,因为结果可能有数百万个项目。publicIEnumerableParse(){foreach(...){yieldreturnparsedObject;}}问题:我有以下属性可用于确定IEnumerable是否包含任何项目:publicboolHasItems{get{returnParse().Take(1).SingleOrDefault()!=null;}}是否有更好的方法来做到这一点? 最佳答案

c# - 为什么编译器决定 2.3 是 double 而不是十进制?

为什么编译器认为2.3是double的,所以这段代码无法编译:decimalx;x=2.3;//Compilationerror-cannotconvertdoubletodecimal.x=(decimal)2.3//O.k.为什么编译器不这样认为:他要取小数,他给我一个可以是小数的值,所以是小数!为什么这不会出现编译错误:shortx;x=23;//O.K.谁说23不是整数? 最佳答案 这里有很多问题。让我们把它们分解成小问题。Whyistheliteral2.3oftypedoubleratherthandecimal?历史原

c# - 如何使用 lambda 表达式来过滤数据行?

如何使用Col1="MyValue"在数据表中搜索行我在想类似的事情Assert.IsTrue(dataSet.Tables[0].Rows.FindAll(x=>x.Col1=="MyValue").Count==1);但这当然行不通! 最佳答案 您可以使用LINQtoDataSets这样做:Assert.IsTrue(dataSet.Tables[0].AsEnumerable().Where(r=>((string)r["Col1"])=="MyValue").Count()==1);请注意,您也可以在不调用Assert的情况

c# - 如何禁止使用字段而不是属性?

这个问题在这里已经有了答案:Moreprivatethanprivate?(C#)(20个答案)关闭8年前。我的类中有一个属性在set访问器中有很多逻辑:privateStringtext;publicStringText{get{returntext;}privateset{//someactionswithavaluevalue=value.Replace('a','b');text=value;}}如何防止其他开发人员(甚至我)更改此类中的field而不是property?如果有人这样写:publicTest(Stringtext){this.text=text;}它会破坏我的类